1. Field of the Invention
The present invention relates generally to a computer system with a novel architecture facilitating programming of dedicated programs for various purpose. More specifically, the invention relates to a computer system which can establish programs easily adapted to later modification of program logic, processes, specifications and so forth. The present invention also relates to a method of programming according to the novel architecture.
2. Description of the Related Art
Ideal programming architecture should provide characteristics of high reliability, be easily understood, be effectively programmed, and be easily modified. A primary and most important task in the development of software is to stably and efficiently provide high quality programs. In general, to realize the ideal program, it is important to have suitable program structure, in which the overall program is hierarchically divided into a plurality of element groups having considerable independence, and respective elements must be configured into so-called aligned structure.
For accomplishing this task, various approaches have been attempted. As essential principles in designing programs, there have been introduced approaches of "modularization", "abstraction", "information hiding", and "localization". These principles have been discussed in various publications associated with software technologies, and need not be further discussed here.
Recognizing the effectiveness of modularization, abstraction, information hiding, and localization, some studies for practical application of those theories to practical program designs have been made and some typical processes have been developed.
(1) Modularization
Constitutes an effective method for designing a complicated system. The method divides the system into a plurality of portions for nominally reducing complexity (so-called "divide-and-conquer"). In modularization design, there have been various proposals for separation into proper modules and determination of the structures of the programs in the modules. In particular, the manner of division of the modules will become the important matter for evaluation of understandability, ease of modification, effectiveness and so forth.
(2) Hierarchical programming
The various methods for hierarchically establishing programs apply the theory of time sequence. Although there are some minor differences, structured programming, the stepwise detailing method, and top down programming may be considered to be included in this category.
(3) Abstract data
is data independent of a realization method (data structure or algorithm for the data structure) and completely defined by its behavior. The behavior is defined by several operations established thereon. Since the portion realizing the abstract data and the portion utilizing the abstract data are associated only through the several operations, the locality is sufficiently high. The concept of abstract data has been developed in association with the study of structured programming or the module design method. Therefore, abstract data can be a means for dividing a problem while paying attention only to the solution's external behavior regardless of the internal structure of the data in program design. Also, programming employing abstract data can be easily verified and thus provides high reliability.
(4)
In the Jackson method, the program is designed as a data flow system constituted of a plurality of processes. No relationship in execution is established between the processes. Therefore, respective processes cooperate only through the data. In comparison with a functional dividing type module designing method, this method may easily increase the independence of respective portions. The Jackson method has been developed as a method for detailed design after division of the program. However, since it also proposes a method for structured program design, it can be said to be a unitary programming designing method.
The above-mentioned program designing technologies of course achieve certain objectives in theoretical study. However such methods cannot provide concrete and practical guidance for remarkably improving the productivity and quality of the programs for field engineers (system engineers) designing dedicated programs for specific operation, in the field. That is, the various designing method of the computer programs conventionally proposed still have a high degree of abstractness and therefore have been merely difficult theories.
Therefore, such programming methods may assist only a small number of high level engineers for enhancing their programming skill. Among field engineering in program designing, various problems remain unsolved and the conventional processes which give rise to such problems continue to be performed by most programming engineers. Namely, since various programming engineers having different levels of knowledge and skill generate programs with their own styles and habits, the quality of the programs varies significantly, causing serious problems in management of the systems. Also, depending upon the size of the system, reduction in productivity becomes a significant problem.
On the other hand, in a dedicated system specifically adapted to a specific task or tasks, such as machine control, machine or industrial system designing, trade management, production management, stock management, supply management, finance management, or personnel management, for example, modification of the specification of the programs or details of the programs at various stages of programming operation frequently becomes necessary. In many cases, programming, even detailed program design or practical programming operation, is started while some factors remain uncertain or undetermined. Such uncertain factors are studied during programming operation. If some problem is found with respect to the uncertain factors, the program specification and/or the detailed designs of the programs are modified to solve the problem. Such modification can influence various portions of the programs and thus requires additional analysis of the overall on-going programs to find the portion affected by the modification. This frequently requires review of the entire programs in the systems to fix or adapt the affected portions to the necessary modification. The somewhat bottom-up and redundant program designing operation clearly lowers the productivity of programming and somewhat lowers the reliability of the entire system. Furthermore, such later adaptation or modification of the programs tends to increase complication of the program and to lower mutual independence of the programs in the system.